﻿
using CSharpLibs.Annotations;

#pragma warning disable 0169

namespace System
{
	[Builtin]
	public struct UInt64 : IUSignIntegralValue, IComparable, IComparable<UInt64>, IEquatable<UInt64>
	{
		public const ulong MaxValue = 18446744073709551615L;
		public const ulong MinValue = 0;

		[DummyPrimitiveField]
		private ulong ff;

		public int CompareTo(object o)
		{
			if(!(o is UInt64))
				Environment.Exit(1);

			return PrimitiveHelper.DoCompareOpIntegral(this, (UInt64)o);
		}

		public int CompareTo(UInt64 l)
		{ return PrimitiveHelper.DoCompareOpIntegral(this, l); }

		public override bool Equals(object o)
		{ return (o is UInt64) && (this == ((UInt64)o)); }

		public bool Equals(UInt64 l)
		{ return this == l; }

		public override int GetHashCode()
		{ return (((int)this) ^ ((int)(this >> 0x20))); }

		public static ulong Parse(string sv)
		{ return PrimitiveHelper.ParseUSignIntegral(sv); }

		public override string ToString()
		{ return PrimitiveHelper.USignIntegralToString(this); }
	}
}

#pragma warning restore 0169
